# 02. Node.js์™€ npm

Assembled by GimunLee

# ๊ฐœ์š”

Angular๋Š” ๊ฐ„๋‹จํ•œ ๋ช…๋ น์–ด๋กœ Angular ํ”„๋กœ์ ํŠธ์˜ ์Šค์บํด๋”ฉ(scaffolding)์„ ์ƒ์„ฑ, ์‹คํ–‰, ๋นŒ๋“œ ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๋‹ค์–‘ํ•œ ๊ตฌ์„ฑ์š”์†Œ๋ฅผ ์„ ๋ณ„์ ์œผ๋กœ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋Š” ์ปค๋งจ๋“œ ๋ผ์ธ ์ธํ„ฐํŽ˜์ด์Šค์ธ Angular CLI๋ฅผ ์ œ๊ณตํ•œ๋‹ค. Angular CLI๋Š” Node.js 6.9.0, npm 3.0.0 ์ด์ƒ์„ ํ•„์š”๋กœ ํ•œ๋‹ค.


# Node.js

# ๊ฐœ์š”

Node.js๋Š” Chrome V8 ์ž๋ฐ”์ŠคํฌํŒํŠธ ์—”์ง„์œผ๋กœ ๋นŒ๋“œ๋œ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋Ÿฐํƒ€์ž„ ํ™˜๊ฒฝ์œผ๋กœ ์ฃผ๋กœ ์„œ๋ฒ„ ์‚ฌ์ด๋“œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ์— ์‚ฌ์šฉ๋˜๋Š” ์†Œํ”„ํŠธ์›จ์–ด ํ”Œ๋žซํผ ์ด๋‹ค.

Node.js๋Š” ๋ธŒ๋ผ์šฐ์ € ์™ธ๋ถ€ ํ™˜๊ฒฝ์—์„œ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ์— ์‚ฌ์šฉ๋˜๋ฉฐ ์ด์— ํ•„์š”ํ•œ ๋ชจ๋“ˆ, ํŒŒ์ผ ์‹œ์Šคํ…œ, HTTP ๋“ฑ ๋นŒํŠธ์ธ API๋ฅผ ์ œ๊ณตํ•œ๋‹ค.

ํ”„๋ก ํŠธ์—”๋“œ์™€ ๋ฐฑ์—”๋“œ์—์„œ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๋™ํ˜•์„ฑ(isomorphic)์€ ๋ณ„๋„์˜ ์–ธ์–ด ํ•™์Šต ์‹œ๊ฐ„์„ ๋‹จ์ถ•ํ•ด ์ฃผ๋Š” ์žฅ์ ์ด ์žˆ๋‹ค.

# ํŠน์ง•

Node.js๋Š” ๋…ผ๋ธ”๋กœํ‚น(non-blocking I/O)์™€ ๋‹จ์ผ ์Šค๋ ˆ๋“œ ์ด๋ฒคํŠธ ๋ฃจํ”„๋ฅผ ํ†ตํ•œ ๋†’์€ ์š”์ฒญ ์ฒ˜๋ฆฌ ์„ฑ๋Šฅ์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค. Node.js๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์‹ค์‹œ๊ฐ„ ์ฒ˜๋ฆฌํ•˜์—ฌ ๋นˆ๋ฒˆํ•œ I/O๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” SPA์— ์ ํ•ฉํ•˜๋‹ค. ํ•˜์ง€๋งŒ CPU ์‚ฌ์šฉ๋ฅ ์ด ๋†’์€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—๋Š” ๊ถŒ์žฅํ•˜์ง€ ์•Š๋Š”๋‹ค.

Node.js์˜ REPL(Read Eval Print Loop: ์ž…๋ ฅ ์ˆ˜ํ–‰ ์ถœ๋ ฅ ๋ฐ˜๋ณต)์€ ๊ฐ€์ƒํ™˜๊ฒฝ์œผ๋กœ ๊ฐ„๋‹จํ•œ ์ฝ”๋“œ๋ฅผ ์ง์ ‘ ์‹คํ–‰ํ•ด ๊ฒฐ๊ณผ๋ฅผ ํ™•์ธํ•ด ๋ณผ ์ˆ˜ ์žˆ๋‹ค. ๋˜ํ•œ Node.js๋Š” http ์„œ๋ฒ„ ๋ชจ๋“ˆ์„ ๋‚ด์žฅํ•˜๊ณ  ์žˆ์–ด์„œ ์•„ํŒŒ์น˜์™€ ๊ฐ™์€ ๋ณ„๋„์˜ ์›น์„œ๋ฒ„๋ฅผ ์„ค์น˜ํ•  ํ•„์š”๊ฐ€ ์—†๋‹ค.


# npm

# ๊ฐœ์š”

npm(node package manager)์€ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํŒจํ‚ค์ง€ ๋งค๋‹ˆ์ € ์ด๋‹ค. Node.js์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋ชจ๋“ˆ์„ ํŒจํ‚ค์ง€ํ™”ํ•˜์—ฌ ๋ชจ์•„๋‘” ์ €์žฅ์†Œ ์—ญํ• ๊ณผ ํŒจํ‚ค์ง€ ์„ค์น˜ ๋ฐ ๊ด€๋ฆฌ๋ฅผ ์œ„ํ•œ CLI๋ฅผ ์ œ๊ณตํ•œ๋‹ค. ์ž์‹ ์ด ์ž‘์„ฑํ•œ ํŒจํ‚ค์ง€๋ฅผ ๊ณต๊ฐœํ•  ์ˆ˜๋„ ์žˆ๊ณ  ํ•„์š”ํ•œ ํŒจํ‚ค์ง€๋ฅผ ๊ฒ€์ƒ‰ํ•˜์—ฌ ์žฌ์‚ฌ์šฉํ•  ์ˆ˜๋„ ์žˆ๋‹ค.

# package.json๊ณผ ์˜์กด์„ฑ ๊ด€๋ฆฌ

Node.js ํ”„๋กœ์ ํŠธ์—์„œ๋Š” ๋งŽ์€ ํŒจํ‚ค์ง€๋ฅผ ์‚ฌ์šฉํ•˜๊ฒŒ ๋˜๊ณ  ํŒจํ‚ค์ง€์˜ ๋ฒ„์ „๋„ ๋นˆ๋ฒˆํ•˜๊ฒŒ ์—…๋ฐ์ดํŠธ๋˜๋ฏ€๋กœ ํ”„๋กœ์ ํŠธ๊ฐ€ ์˜์กดํ•˜๊ณ  ์žˆ๋Š” ํŒจํ‚ค์ง€๋ฅผ ์ผ๊ด„์ ์œผ๋กœ ๊ด€๋ฆฌํ•  ํ•„์š”๊ฐ€ ์žˆ๋‹ค. npm์€ package.json ํŒŒ์ผ์„ ํ†ตํ•ด์„œ ํ”„๋กœ์ ํŠธ ์ •๋ณด์™€ ํŒจํ‚ค์ง€์˜ ์˜์กด์„ฑ์„ ๊ด€๋ฆฌํ•œ๋‹ค.

package.json์—์„œ ๊ฐ€์žฅ ์ค‘์š”ํ•œ ํ•ญ๋ชฉ์€ name๊ณผ version์€ ํŒจํ‚ค์ง€์˜ ๊ณ ์œ ์„ฑ์„ ํŒ๋‹จํ•˜๋ฏ€๋กœ ์ƒ๋žตํ•  ์ˆ˜ ์—†๋‹ค.

npm install ๋ช…๋ น์–ด์— --save ์˜ต์…˜์„ ์‚ฌ์šฉํ•˜๋ฉด ํŒจํ‚ค์ง€ ์„ค์น˜์™€ ํ•จ๊ป˜ package.json์˜ dependencies์— ์„ค์น˜๋œ ํŒจํ‚ค์ง€ ์ด๋ฆ„๊ณผ ๋ฒ„์ „์ด ๊ธฐ๋ก๋œ๋‹ค. (๊ธฐ๋ณธ ์˜ต์…˜์œผ๋กœ ๋ณ€๊ฒฝ๋˜์—ˆ๋‹ค.)

Last Updated: 8/12/2020, 1:33:42 PM